package collection;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class SortString {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("王克晶");
        list.add("传奇sdsafsa");
        list.add("国斌老师");
        System.out.println("list原始数据:"+list);

        Collections.sort(list, new Comparator<String>() {
            /*
            compare()方法用于定义o1和o2比较大小的规则，并且返回值表达大小关系
            返回值实现的要求:---------------不用纠结，记住下面的结论即可
                1)如果返回值大于0，则表达的是o1大于o2
                2)如果返回值小于0，则表达的是o1小于o2
                3)如果返回值等于0，则表达的是o1等于o2
            结论:
                1)前面的-后面的 升序
                2)后面的-前面的 降序
             */
            @Override
            public int compare(String o1, String o2) {
                //如果o1的长度大于o2的长度，意味着返回值大于0，是交换，o1小于o2----升序
                return o1.length()-o2.length();//升序
//                return o2.length()-o1.length();//降序

            }
        });

        Collections.sort(list,((o1, o2) -> o1.length()-o2.length()));







        System.out.println("list排序后的数据:"+list);

















//        List<String> list = new ArrayList<>();
//        list.add("jack");
//        list.add("rose");
//        list.add("tom");
//        list.add("jerry");
//        list.add("black");
//        list.add("kobe");
//        System.out.println("list原始数据:"+list);//list原始数据:[jack, rose, tom, jerry, black, kobe]
//
//        //对英文字符串排序时，会按首字母的ASCII码来排
//        //若首字母相同，则比较第二个字母的ASCII码，以此类推
//        Collections.sort(list);
//        System.out.println("list排序后数据:"+list);//list排序后数据:[black, jack, jerry, kobe, rose, tom]

    }
}
